home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- /* re: "Executable Strings" by James A. Kuzdrall in the May 1990 issue.
- * It is possible to execute stings in any 80x86 memory model by
- * casting the string to a far function pointer.
- *
- * Yours Truly,
- *
- * Rick Shide
- * Moore Data Management
- * S Hwy 100
- * Minneapolis, MN 55416-1519
- */
-
- /* asm equivalent of executable string setting return value to 5
- *
- * mov ax,5 ; B8 05 00
- * ret ; CB
- */
-
- typedef int (far *FPFI)(); // pointer to far function returning int
-
- /* demonstrate executable strings
- */
- main()
- {
- int i;
- char *str;
-
- /* immediate form
- */
- i = ((FPFI)"\xb8\x05\x00\xcb")();
- printf("%d\n", i); // will print "5"
-
- /* string ptr form
- */
- str = "\xb8\x34\x12\xcb";
- i = ((FPFI)str)();
- printf("0X%x\n", i); // will print "0X1234"
- }
-
-
-
-